// 封装分类数据业务相关的代码
import { getCategoryAPI } from '@/apis/category'
import { onMounted } from 'vue'
import { onBeforeRouteUpdate, useRoute } from 'vue-router'

// 把逻辑进行封装，把使用到的数据返回出去
export function useCategory() {
  // 数据对象
  const categoryData = ref({})
  // 创建路由的实例化对象
  const route = useRoute()
  // 创建获取数据的方法,接收前面传进来的id，默认值为当前路由id
  const getCategory = async (id = route.params.id) => {
    // 发送请求
    const res = await getCategoryAPI(id)
    categoryData.value = res.result
  }

  // 这里的目的是为了让组件不直接进行加载，进行可控的数据更新，减少资源浪费
  // 路由参数变化的时候，可以把分类数据接口重新发送,to 代表目标路由对象
  onBeforeRouteUpdate((to) => {
    // 使用最新的路由参数请求最新的数据，把目标路由对象的id传进去
    getCategory(to.params.id)
  })

  // 页面挂载时调用
  onMounted(() => {
    getCategory()
  })

  return {
    categoryData,
  }
}
